    <%--
      Created by IntelliJ IDEA.
      User: zzy
      Date: 2025/8/31
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <meta charset="utf-8">
        <title>供应链金融平台</title>
        <link rel="stylesheet" href="assets/css/amazeui.min.css"/>
        <link rel="stylesheet" href="assets/css/admin.css">
        <link rel="stylesheet" href="assets/css/app.css">
        <style>
            .am-tabs-bd {
                border: none;
            }

            .am-tabs-bd .am-tab-panel {
                padding: 0
            }

            .action-link {
                cursor: pointer;
                color: #007bff;
            }
        </style>
    </head>

    <body data-type="generalComponents">
    <header class="am-topbar am-topbar-inverse admin-header">
        <div class="am-collapse am-topbar-collapse" id="topbar-collapse">
            <ul class="am-nav am-nav-pills am-topbar-nav am-topbar-right admin-header-list tpl-header-list">
                <li class="am-dropdown" data-am-dropdown data-am-dropdown-toggle>
                    <a class="am-dropdown-toggle tpl-header-list-link" href="javascript:;">
                        <span class="tpl-header-list-user-nick">我不是厨神</span>
                        <span class="tpl-header-list-user-ico"><img src="assets/img/user04.png"></span>
                    </a>
                    <ul class="am-dropdown-content">
                        <li><a href="index.jsp"><span class="am-icon-power-off"></span> 退出</a></li>
                    </ul>
                </li>
            </ul>
        </div>
    </header>

    <div class="tpl-page-container tpl-page-header-fixed">
        <!-- 左侧导航 -->
        <div class="tpl-left-nav tpl-left-nav-hover">
            <div class="tpl-left-nav-list">
                <ul class="tpl-left-nav-menu">
                    <li class="tpl-left-nav-item">
                        <a href="javascript:;" class="nav-link tpl-left-nav-link-list active">
                            <i class="am-icon-table"></i>
                            <span>发票管理</span>
                            <i class="am-icon-angle-right tpl-left-nav-more-ico am-fr am-margin-right tpl-left-nav-more-ico-rotate"></i>
                        </a>
                        <ul class="tpl-left-nav-sub-menu" style="display:block">
                            <li><a href="invoice-list.jsp" class="active"><i
                                    class="am-icon-angle-right"></i><span>发票总览管理</span></a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>

        <!-- 主体内容 -->
        <div class="tpl-content-wrapper">
            <div class="tpl-content-page-title">发票信息管理</div>
            <div class="am-tabs" data-am-tabs>
                <ul class="am-tabs-nav am-nav am-nav-tabs" style="height: 50px;border:none">
                    <li class="am-active"><a href="#tab1">基础信息管理</a></li>
                    <li><a href="#tab2">邮寄地址管理</a></li>
                    <li><a href="#tab3">电子邮箱</a></li>
                </ul>

                <div class="am-tabs-bd">
                    <!-- Tab1 基础信息 -->
                    <div class="am-tab-panel am-active" id="tab1">
                        <form class="am-form">
                            <table class="am-table am-table-striped am-table-hover table-main">
                                <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>发票抬头</th>
                                    <th>税号</th>
                                    <th>开户银行</th>
                                    <th>开户账号</th>
                                    <th>注册固定电话</th>
                                    <th>注册地址</th>
                                    <th>操作</th>
                                </tr>
                                </thead>
                                <tbody id="doc-modal-list-base">
                                <tr>
                                    <%--                                <td>1</td>--%>
                                    <%--                                <td>百度科技有限公司 <span--%>
                                    <%--                                        style="background:#e6f7ff;border:1px solid #1890FF;padding:3px 5px;border-radius:3px;">默认</span>--%>
                                    <%--                                </td>--%>
                                    <%--                                <td>91110000802100XXXX</td>--%>
                                    <%--                                <td>--%>
                                    <%--                                    <div class="editRow">中国工商银行</div>--%>
                                    <%--                                    <input type="text" class="am-form-field editInput" value="中国工商银行"--%>
                                    <%--                                           style="width:70%">--%>
                                    <%--                                </td>--%>
                                    <%--                                <td>--%>
                                    <%--                                    <div class="editRow">12345678998745632</div>--%>
                                    <%--                                    <input type="text" class="am-form-field editInput" value="12345678998745632"--%>
                                    <%--                                           style="width:70%">--%>
                                    <%--                                </td>--%>
                                    <%--                                <td>--%>
                                    <%--                                    <div class="editRow">13888888888</div>--%>
                                    <%--                                    <input type="text" class="am-form-field editInput" value="13888888888"--%>
                                    <%--                                           style="width:70%">--%>
                                    <%--                                </td>--%>
                                    <%--                                <td>--%>
                                    <%--                                    <div class="editRow">北京市海淀区百度大厦</div>--%>
                                    <%--                                    <input type="text" class="am-form-field editInput" value="北京市海淀区百度大厦"--%>
                                    <%--                                           style="width:70%">--%>
                                    <%--                                </td>--%>



                                    <%--                                <td>--%>
                                    <%--                                    <span class="editBtn action-link">编辑</span>--%>
                                    <%--                                    <span class="saveBtn action-link">保存</span>--%>
                                    <%--                                    <span class="cancelBtn action-link">取消</span>--%>
                                    <%--                                </td>--%>
                                </tr>
                                </tbody>
                            </table>
                            <div style="text-align:center;margin-top:40px">
                                <a class="am-btn am-btn-default" href="invoice-list.jsp">返回</a>
                            </div>
                        </form>
                    </div>

                    <!-- Tab2 地址 -->
                    <div class="am-tab-panel" id="tab2">
                        <form class="am-form">
                            <table class="am-table am-table-striped am-table-hover table-main" id="table_id_address">
                                <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>收件人</th>
                                    <th>联系电话</th>
                                    <th>省市区</th>
                                    <th>详细地址</th>
                                    <th>默认情况</th>
                                    <th>操作</th>
                                </tr>
                                </thead>
                                <tbody id="doc-modal-list-address"></tbody>
                            </table>
                            <div style="text-align:center;margin-top:40px">
                                <a class="am-btn am-btn-default" href="invoice-list.jsp">返回</a>
                                <a class="am-btn am-btn-primary" onclick="DynamicTableManager.addRow('address')"
                                   style="margin-left:20px">新增</a>
                            </div>
                        </form>
                    </div>

                    <!-- Tab3 邮箱 -->
                    <div class="am-tab-panel" id="tab3">
                        <form class="am-form">
                            <table class="am-table am-table-striped am-table-hover table-main" id="table_id_email">
                                <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>邮箱</th>
                                    <th>默认情况</th>
                                    <th>操作</th>
                                </tr>
                                </thead>
                                <tbody id="doc-modal-list-email"></tbody>
                            </table>
                            <div style="text-align:center;margin-top:40px">
                                <a class="am-btn am-btn-default" href="invoice-list.jsp">返回</a>
                                <a class="am-btn am-btn-primary" onclick="DynamicTableManager.addRow('email')"
                                   style="margin-left:20px">新增</a>
                            </div>
                        </form>
                    </div>

                </div>
            </div>
        </div>
    </div>

    <script src="assets/js/jquery-1.8.3.js"></script>
    <script src="assets/js/amazeui.min.js"></script>
    <script src="assets/js/app.js"></script>
    <script>



        $(document).ready(function () {

            baseInfoManage()

            addressManage()

            emailManage()


        });



        function baseInfoManage(){

            //加载基础信息管理
            // 先加载后端基础信息
            $.ajax({
                url: "baseInfo/queryBaseDate",
                type: "get",
                dataType: "json",
                success: function (response) {
                    // console.log("后端返回的邮箱列表：", response);
                    const $emailTbody = $("#doc-modal-list-base");
                    $emailTbody.empty();

                    if (response.length === 0) {
                        $emailTbody.append(`
                            <tr>
                                <td colspan="8" style="color: #999;">暂无邮箱数据</td>
                            </tr>
                        `);
                        return;
                    }


                    //  遍历 allEmail 对应的 JSON 数组（核心遍历逻辑）
                    $.each(response, function (index, baseData) {
                        console.log("当前对象：",  baseData.id);
                        // console.log("当前邮箱对象：", email.emailDetail); // 可在控制台查看每个Email属性
                        // console.log("后端返回的原始response：", JSON.stringify(response, null, 2));
                        // 处理“是否默认”标签（A=默认，B=普通）

                        //  拼接表格行（与DynamicTableManager新增行结构一致，确保编辑功能可用）
                        const rowHtmlBase = `
                            <tr>
                                <td>`+ baseData.id+`</td>
                                <td>  `+ baseData.title+` </td>
                                <td>`+ baseData.taxNo+`</td>
                                 <td>`+ baseData.bankName+`</td>
                                  <td>`+ baseData.bankAccount+`</td>
                                  <td>`+ baseData.phone+`</td> <td>`+ baseData.address+`</td>
                                <td>
                                    <div id="operate-email-`+ baseData.id+`">
                                        <a class="action-link" onclick="DynamicTableManager.enableEditing('baseData', `+ baseData.id+`)">编辑</a>&nbsp;&nbsp;

                                    </div>
                                </td>
                            </tr>
                        `;
                        $emailTbody.append(rowHtmlBase); // 插入表格行
                    });
                },
                error: function (xhr, status, error) {
                    const $emailTbody = $("#doc-modal-list-base");
                    $emailTbody.empty().append(`
                        <tr>
                            <td colspan="4" style="color: #ff4d4f;">加载失败：`+error+`</td>
                        </tr>
                    `);
                    console.error("获取邮箱列表失败：", status, error);
                }
            });
        }

        function addressManage(){

            // 先加载后端邮箱地址信息
            $.ajax({
                url: "baseInfo/queryEmailAddress",
                type: "get",
                dataType: "json",
                success: function (response) {
                    // console.log("后端返回的邮箱列表：", response);
                    const $emailTbody = $("#doc-modal-list-address");
                    $emailTbody.empty();

                    if (response.length === 0) {
                        $emailTbody.append(`
                            <tr>
                                <td colspan="6" style="color: #999;">暂无地址数据</td>
                            </tr>
                        `);
                        return;
                    }



                    //  遍历 allEmail 对应的 JSON 数组（核心遍历逻辑）
                    $.each(response, function (index, addressEmail) {

                        const defaultTag = (addressEmail.defaultStatus === "A"
                            ? '<span style="background:#e6f7ff;border:1px solid #1890FF;padding:3px 5px;border-radius:3px;">默认邮箱地址</span>'
                            : '<span style="background:#f9f9f9;border:1px solid #ddd;padding:3px 5px;border-radius:3px;">普通邮箱地址</span>');

                        // alert( email.emailDetail+"*************************")
                        // console.log("当前邮箱对象：", email.emailDetail); // 可在控制台查看每个Email属性
                        // console.log("后端返回的原始response：", JSON.stringify(response, null, 2));
                        // 处理“是否默认”标签（A=默认，B=普通）

                        //  拼接表格行（与DynamicTableManager新增行结构一致，确保编辑功能可用）
                        const rowHtmlAd = `
                            <tr>
                                <td>`+addressEmail.id+`</td>
                                <td>  `+addressEmail.addressee+`     </td>
                                <td>`+addressEmail.phone+`</td>
                                 <td>`+addressEmail.area+`</td>
                                  <td>`+addressEmail.addressDetail+`</td>
    <td>`+defaultTag+`</td>
                                <td>
                                    <div id="operate-email-`+addressEmail.id+`">
                                        <a class="action-link" onclick="DynamicTableManager.enableEditing('address', `+addressEmail.id+`)">编辑</a>&nbsp;&nbsp;
                                        <a class="action-link" onclick="setDefaultAddress(`+addressEmail.id+`)">设为默认</a>
                                    </div>
                                </td>
                            </tr>
                        `;
                        $emailTbody.append(rowHtmlAd); // 插入表格行
                    });
                },
                error: function (xhr, status, error) {
                    const $emailTbody = $("#doc-modal-list-address");
                    $emailTbody.empty().append(`
                        <tr>
                            <td colspan="4" style="color: #ff4d4f;">加载失败：`+error+`</td>
                        </tr>
                    `);
                    console.error("获取邮箱列表失败：", status, error);
                }
            });



            // 替换 emailManage() 中的 window.DynamicTableManager.enableEditing 函数
            window.DynamicTableManager.enableEditing = function (tableType, rowId) {
                // 1. 先解绑旧事件，避免重复绑定导致多次触发
                $("#doc-modal-list-base, #doc-modal-list-address, #doc-modal-list-email").off("click", ".action-link, .action-link1");

                $("#doc-modal-list-base, #doc-modal-list-address, #doc-modal-list-email").on("click", ".action-link, .action-link1", function () {
                    const $editBtn = $(this);
                    const $btnContainer = $editBtn.closest('div[id^="operate-email-"]');
                    if (!$btnContainer || $btnContainer.length === 0) {
                        console.warn("未找到按钮容器，跳过操作");
                        return;
                    }
                    const $currentRow = $btnContainer.closest('tr');
                    const containerId = $btnContainer.attr('id');
                    if (!containerId) {
                        console.warn("容器ID为空，跳过操作");
                        return;
                    }
                    const realRowId = containerId.replace('operate-email-', '');
                    console.log("进入编辑模式：", "tableType=", tableType, "realRowId=", realRowId);

                    // 2. 拼接“保存/取消”按钮（核心：传递正确的tableType和realRowId）
                    $btnContainer.html(`
                <a class="action-link-input" onclick="DynamicTableManager.saveRow('${tableType}', '${realRowId}')">保存</a>&nbsp;&nbsp;
                <a class="action-link-quxiao" onclick="DynamicTableManager.cancelEdit('${tableType}', '${realRowId}')">取消</a>


            `);

                    $(".action-link-quxiao").on('click',function () {

                        window.location.href="invoice-info-manage.jsp";
                    })

                    $(".action-link-input").on('click',function () {

                        var addressName = $emailInput.val().trim(); // 获取邮箱内容
                        var id = $emailInput.attr("id"); // 获取输入框ID（如 email-1）
                        var addressId = id.replace("email-", ""); // 提取纯ID（如 1，对应后端的email.id）

                        // 3. 打印测试（现在就能拿到正确的值了）
                        console.log("邮箱内容：", addressName);
                        // console.log("输入框ID：", id);
                        console.log("后端邮箱ID：", addressId);

                        $.get("baseInfo/getEditAddress", {
                            addressId: addressId,
                            addressName: addressName
                        }, function (i) {
                            if (i){
                                alert("修改成功");
                                window.location.href="invoice-info-manage.jsp";
                            }else {
                                alert("修改失败");
                                window.location.href="invoice-info-manage.jsp";
                            }
                        })

                        // $.get("baseInfo/getEditEmail", {
                        //
                        // }


                    })



                    // 3. 显示输入框，隐藏原始文本（编辑模式视觉效果）
                    $currentRow.find('.editRow').hide();
                    const $emailInput = $currentRow.find('#email-' + realRowId);
                    if ($emailInput.length > 0) {
                        $emailInput.show(); // 邮箱模块：单独输入框
                    } else {
                        $currentRow.find('.editInput').show(); // 基础/地址模块：所有输入框
                    }
                });
            };





            //  新增“设为默认”功能
            window.setDefaultAddress = function (emailAddressId) {
                if (confirm("确定将此邮箱设为默认？")) {
                    $.ajax({
                        url: "baseInfo/setDefaultAddress",
                        type: "post",
                        data: { emailAddressId: emailAddressId },
                        success: function (res) {
                            // alert(res.msg);
                            location.reload(); // 刷新页面更新默认状态
                        },
                        error: function () {
                            alert("设为默认失败，请重试");
                        }
                    });
                }
            };



        }





        function emailManage(){
            // 先加载后端邮箱数据
            $.ajax({
                url: "baseInfo/queryEmail",
                type: "get",
                dataType: "json",
                success: function (response) {
                    // console.log("后端返回的邮箱列表：", response);
                    const $emailTbody = $("#doc-modal-list-email");
                    $emailTbody.empty();

                    if (response.length === 0) {
                        $emailTbody.append(`
                            <tr>
                                <td colspan="4" style="color: #999;">暂无邮箱数据</td>
                            </tr>
                        `);
                        return;
                    }


                    //  遍历 allEmail 对应的 JSON 数组（核心遍历逻辑）
                    $.each(response, function (index, email) {


                        // alert( email.emailDetail+"*************************")
                        console.log("当前邮箱对象：", email.emailDetail); // 可在控制台查看每个Email属性
                        // console.log("后端返回的原始response：", JSON.stringify(response, null, 2));
                        // 处理“是否默认”标签（A=默认，B=普通）
                        const defaultTag = (email.defaultStatus === "A"
                            ? '<span style="background:#e6f7ff;border:1px solid #1890FF;padding:3px 5px;border-radius:3px;">默认邮箱</span>'
                            : '<span style="background:#f9f9f9;border:1px solid #ddd;padding:3px 5px;border-radius:3px;">普通邮箱</span>');

                        //  拼接表格行（与DynamicTableManager新增行结构一致，确保编辑功能可用）
                        const rowHtml = `
                            <tr>
                                <td>`+email.id+`</td>
                                <!-- 邮箱地址：默认显示文本，编辑时显示输入框 -->
                                <td>
                                    <div class="editRow">`+email.emailDetail+`</div>
                                    <input type="text" id="email-`+email.id+`" type="email" class="am-form-field editInput"
                                           value="`+email.emailDetail+`" style="width:120px;display:none">
                                </td>
                                <!-- 默认状态：仅显示，不允许编辑 -->
                                <td>`+defaultTag+`</td>
                                <!-- 操作区：编辑/保存/取消（与模块逻辑对齐） -->
                                <td>
                                    <div id="operate-email-`+email.id+`">
                                            <a class="action-link1" onclick="DynamicTableManager.enableEditing('email', `+email.id+`)">编辑</a>&nbsp;&nbsp;
                                            <a class="action-link2" onclick="setDefaultEmail(`+email.id+`)">设为默认</a>
                                    </div>
                                </td>
                            </tr>
                        `;
                        $emailTbody.append(rowHtml); // 插入表格行
                    });
                },
                error: function (xhr, status, error) {
                    const $emailTbody = $("#doc-modal-list-email");
                    $emailTbody.empty().append(`
                        <tr>
                            <td colspan="4" style="color: #ff4d4f;">加载失败：`+error+`</td>
                        </tr>
                    `);
                    console.error("获取邮箱列表失败：", status, error);
                }

            });


            // 替换 emailManage() 中的 window.DynamicTableManager.enableEditing 函数
            window.DynamicTableManager.enableEditing = function (tableType, rowId) {
                // 1. 先解绑旧事件，避免重复绑定导致多次触发
                $("#doc-modal-list-base, #doc-modal-list-address, #doc-modal-list-email").off("click", ".action-link, .action-link1");

                $("#doc-modal-list-base, #doc-modal-list-address, #doc-modal-list-email").on("click", ".action-link, .action-link1", function () {
                    const $editBtn = $(this);
                    const $btnContainer = $editBtn.closest('div[id^="operate-email-"]');
                    if (!$btnContainer || $btnContainer.length === 0) {
                        console.warn("未找到按钮容器，跳过操作");
                        return;
                    }
                    const $currentRow = $btnContainer.closest('tr');
                    const containerId = $btnContainer.attr('id');
                    if (!containerId) {
                        console.warn("容器ID为空，跳过操作");
                        return;
                    }
                    const realRowId = containerId.replace('operate-email-', '');
                    console.log("进入编辑模式：", "tableType=", tableType, "realRowId=", realRowId);

                    // 2. 拼接“保存/取消”按钮（核心：传递正确的tableType和realRowId）
                    $btnContainer.html(`
                <a class="action-link-input" onclick="DynamicTableManager.saveRow('${tableType}', '${realRowId}')">保存</a>&nbsp;&nbsp;
                <a class="action-link-quxiao" onclick="DynamicTableManager.cancelEdit('${tableType}', '${realRowId}')">取消</a>


            `);

                    $(".action-link-quxiao").on('click',function () {

                        window.location.href="invoice-info-manage.jsp";
                    })

                    $(".action-link-input").on('click',function () {

                        var emailName = $emailInput.val().trim(); // 获取邮箱内容
                        var id = $emailInput.attr("id"); // 获取输入框ID（如 email-1）
                        var emailId = id.replace("email-", ""); // 提取纯ID（如 1，对应后端的email.id）

                        // 3. 打印测试（现在就能拿到正确的值了）
                        console.log("邮箱内容：", emailName);
                        // console.log("输入框ID：", id);
                        console.log("后端邮箱ID：", emailId);

                        $.get("baseInfo/getEditEmail", {
                            emailId: emailId,
                            emailName: emailName
                        }, function (i) {
                           if (i){
                               alert("修改成功");
                               window.location.href="invoice-info-manage.jsp";
                           }else {
                               alert("修改失败");
                               window.location.href="invoice-info-manage.jsp";
                           }
                        })

                        // $.get("baseInfo/getEditEmail", {
                        //
                        // }


                    })




                    // 3. 显示输入框，隐藏原始文本（编辑模式视觉效果）
                    $currentRow.find('.editRow').hide();
                    const $emailInput = $currentRow.find('#email-' + realRowId);
                    if ($emailInput.length > 0) {
                        $emailInput.show(); // 邮箱模块：单独输入框
                    } else {
                        $currentRow.find('.editInput').show(); // 基础/地址模块：所有输入框
                    }
                });
            };





            //  新增“设为默认”功能
            window.setDefaultEmail = function (emailId) {
                if (confirm("确定将此邮箱设为默认？")) {
                    $.ajax({
                        url: "baseInfo/setDefaultEmail",
                        type: "post",
                        data: { emailId: emailId },
                        success: function (res) {
                            // alert(res.msg);
                            location.reload(); // 刷新页面更新默认状态
                        },
                        error: function () {
                            alert("设为默认失败，请重试");
                        }
                    });
                }
            };
        }


        (function ($) {
            'use strict';

            // 保留 InvoiceEditor 相关代码（不变）
            var InvoiceEditor = {
                init: function () {
                    this.cacheElements();
                    this.bindEvents();
                    this.hideEditControls();
                },
                cacheElements: function () {
                    this.$table = $('table');
                    this.$editRows = $('.editRow');
                    this.$editInputs = $('.editInput');
                },
                bindEvents: function () {
                    var self = this;
                    this.$table.on('click', '.editBtn', function () {
                        self.onEdit($(this).closest('tr'));
                    });
                    this.$table.on('click', '.saveBtn', function () {
                        self.onSave($(this).closest('tr'));
                    });
                    this.$table.on('click', '.cancelBtn', function () {
                        self.onCancel($(this).closest('tr'));
                    });
                },
                hideEditControls: function () {
                    $('.saveBtn,.cancelBtn,.editInput').hide();
                },
                onCancel: function ($row) {
                    $row.find('.saveBtn,.cancelBtn,.editInput').hide();
                    $row.find('.editBtn,.editRow').show();
                },
                onSave: function ($row) {
                    $row.find('.saveBtn,.cancelBtn,.editInput').hide();
                    $row.find('.editBtn,.editRow').show();
                    console.log('保存数据到服务器');
                },
                onEdit: function ($row) {
                    $row.find('.saveBtn,.cancelBtn,.editInput').show();
                    $row.find('.editBtn,.editRow').hide();
                }
            };

            /**
             * 动态表格管理模块（核心修复：恢复 addRow 和 generateRowHtml）
             */
            window.DynamicTableManager = {
                init: function () {
                    this.tables = {
                        email: $('#table_id_email'),    // 邮箱表格实例
                        address: $('#table_id_address') // 地址表格实例
                    };
                },

                // 1. 新增行函数（核心：调用 generateRowHtml 生成结构）
                addRow: function (tableType) {
                    // 先获取对应表格实例
                    var table = this.tables[tableType];
                    if (!table || table.length === 0) {
                        console.error("未找到表格：", tableType);
                        return;
                    }
                    // 获取当前表格行数（用于新行序号）
                    var rowCount = table.find('tbody tr').length;
                    var newRowIndex = rowCount + 1;
                    // 调用 generateRowHtml 生成新行HTML
                    var newRowHtml = this.generateRowHtml(tableType, newRowIndex);
                    // 将新行添加到表格 tbody 中
                    table.find('tbody').append(newRowHtml);

                    // 【关键修复】新增行添加后，自动显示输入框、隐藏默认文本
                    var $newRow = table.find('tbody tr:last-child'); // 找到刚新增的最后一行
                    if ($newRow.length > 0) {
                        $newRow.find('.editRow').hide(); // 隐藏默认文本（如“请输入收件人”）
                        $newRow.find('.editInput').show(); // 显示输入框（核心：让input可见）
                    }
                },

                // 2. 生成新行HTML结构（适配邮箱/地址模块，关键：添加输入框和类名）
                generateRowHtml: function (tableType, rowIndex) {
                    // 基础序号列
                    var baseHtml = '<tr><td>' + rowIndex + '</td>';

                    // 区分模块生成不同结构
                    if (tableType === 'email') {
                        // 邮箱模块新行：包含邮箱输入框 + 保存/取消按钮
                        return baseHtml +
                            '<td>' +
                            '<div class="editRow">（请输入邮箱）</div>' + // 默认文本（编辑时隐藏）
                            '<input type="email" id="email-new-' + rowIndex + '" class="am-form-field editInput" ' +
                            'placeholder="请输入邮箱" style="width:120px;display:none;">' + // 输入框（初始隐藏）
                            '</td>' +
                            '<td>（新增未保存）</td>' + // 默认状态列
                            '<td>' +
                            '<div id="operate-email-new-' + rowIndex + '">' + // 按钮容器（ID唯一）
                            '<a class="action-link-save" onclick="DynamicTableManager.saveNewRow(\'email\', ' + rowIndex + ')">保存</a>&nbsp;&nbsp;' +
                            '<a class="action-link-cancel" onclick="DynamicTableManager.deleteNewRow(\'email\', ' + rowIndex + ')">取消</a>' +
                            '</div>' +
                            '</td></tr>';
                    } else if (tableType === 'address') {
                        // 地址模块新行：包含收件人、电话、省市区、详细地址输入框
                        return baseHtml +
                            // 收件人
                            '<td>' +
                            '<div class="editRow">（请输入收件人）</div>' +
                            '<input type="text" id="addr-addressee-new-' + rowIndex + '" class="am-form-field editInput" ' +
                            'placeholder="收件人" style="width:100px;display:none;">' +
                            '</td>' +
                            // 联系电话
                            '<td>' +
                            '<div class="editRow">（请输入电话）</div>' +
                            '<input type="text" id="addr-phone-new-' + rowIndex + '" class="am-form-field editInput" ' +
                            'placeholder="联系电话" style="width:120px;display:none;">' +
                            '</td>' +
                            // 省市区
                            '<td>' +
                            '<div class="editRow">（请输入省市区）</div>' +
                            '<input type="text" id="addr-area-new-' + rowIndex + '" class="am-form-field editInput" ' +
                            'placeholder="如：北京市海淀区" style="width:150px;display:none;">' +
                            '</td>' +
                            // 详细地址
                            '<td>' +
                            '<div class="editRow">（请输入详细地址）</div>' +
                            '<input type="text" id="addr-detail-new-' + rowIndex + '" class="am-form-field editInput" ' +
                            'placeholder="详细地址" style="width:180px;display:none;">' +
                            '</td>' +
                            // 默认状态
                            '<td>（新增未保存）</td>' +
                            // 操作按钮
                            '<td>' +
                            '<div id="operate-addr-new-' + rowIndex + '">' +
                            '<a class="action-link-save" onclick="DynamicTableManager.saveNewRow(\'address\', ' + rowIndex + ')">保存</a>&nbsp;&nbsp;' +
                            '<a class="action-link-cancel" onclick="DynamicTableManager.deleteNewRow(\'address\', ' + rowIndex + ')">取消</a>' +
                            '</div>' +
                            '</td></tr>';
                    }
                    return ''; // 未知模块返回空
                },

                // 3. 保存新增行（新增：处理邮箱/地址的新增保存逻辑）
                // 3. 保存新增行（极简版：直接获取输入框值并发送请求）
                saveNewRow: function (tableType, rowIndex) {
                    var $table = this.tables[tableType];
                    // 1. 找到“当前新增行”（通过行序号定位，避免全局变量）
                    var $newRow = $table.find('tbody tr').eq(rowIndex - 1); // 序号从1开始，eq索引从0开始
                    if (!$newRow.length) {
                        alert("未找到新增行，保存失败");
                        return;
                    }

                    // 2. 按模块类型，直接获取当前行的输入框值（不用复杂ID，按顺序取）
                    var params = {};
                    if (tableType === 'email') {
                        // 邮箱模块：只有1个输入框，直接取第一个.editInput的值
                        var emailVal = $newRow.find('.editInput').val().trim();
                        // 简单校验
                        if (!emailVal) {
                            alert("请输入邮箱地址！");
                            return;
                        }
                        // 3. 直接发送请求（成功刷新，失败提示）
                        $.post("baseInfo/insertNewEmail", {"emailDetail":emailVal}, function (res) {
                            if (res.success || res) { // 兼容后端返回布尔值或对象
                                alert("邮箱新增成功！");
                                window.location.reload(); // 刷新页面显示新数据
                            } else {
                                alert("新增失败：" + (res.msg || "服务器异常"));
                            }
                        }).error(function () {
                            alert("新增请求失败，请检查网络");
                        });

                    } else if (tableType === 'address') {
                        // 地址模块：4个输入框，按顺序取（收件人→电话→省市区→详细地址）
                        var addressee = $newRow.find('.editInput').eq(0).val().trim(); // 第1个输入框：收件人
                        var phone = $newRow.find('.editInput').eq(1).val().trim();      // 第2个输入框：电话
                        var area = $newRow.find('.editInput').eq(2).val().trim();       // 第3个输入框：省市区
                        var detail = $newRow.find('.editInput').eq(3).val().trim();     // 第4个输入框：详细地址
                        // 简单校验
                        if (!addressee || !phone || !area || !detail) {
                            alert("收件人、电话、省市区、详细地址不能为空！");
                            return;
                        }
                        // 组装请求参数（与后端接口字段对应）
                        params.addressee = addressee;
                        params.phone = phone;
                        params.area = area;
                        params.addressDetail = detail;
                        params.defaultStatus = "B"; // 新增默认非默认
                        // 3. 直接发送请求
                        $.post("baseInfo/addAddress", params, function (res) {
                            if (res.success || res) {
                                alert("地址新增成功！");
                                window.location.reload();
                            } else {
                                alert("新增失败：" + (res.msg || "服务器异常"));
                            }
                        }).error(function () {
                            alert("新增请求失败，请检查网络");
                        });
                    }
                },

                // 4. 取消新增行（新增：删除未保存的新增行）
                deleteNewRow: function (tableType, rowIndex) {
                    var $table = this.tables[tableType];
                    var $newRow = $table.find('tbody tr').eq(rowIndex - 1);
                    $newRow.remove(); // 直接删除新增行
                },

                // 保留之前修复的 enableEditing 函数（不变）
                enableEditing: function (tableType, rowId) {
                    // 1. 彻底解绑所有模块的编辑/保存事件（避免冲突）
                    $("#doc-modal-list-address, #doc-modal-list-email")
                        .off("click", ".action-link, .action-link1, .action-link-input, .action-link-quxiao");

                    // 2. 绑定编辑按钮点击事件（区分模块处理）
                    const $editButtons = tableType === 'email'
                        ? $("#doc-modal-list-email .action-link1") // 邮箱模块编辑按钮：.action-link1
                        : $("#doc-modal-list-address .action-link"); // 地址模块编辑按钮：.action-link

                    $editButtons.on("click", function () {
                        const $editBtn = $(this);
                        // 找到按钮容器（ID格式：operate-email-${id}）
                        const $btnContainer = $editBtn.closest('div[id^="operate-email-"]');
                        if (!$btnContainer || $btnContainer.length === 0) {
                            console.warn("未找到按钮容器，编辑失败");
                            return;
                        }
                        const $currentRow = $btnContainer.closest('tr'); // 当前编辑行
                        const containerId = $btnContainer.attr('id');
                        const realRowId = containerId.replace('operate-email-', ''); // 提取真实ID

                        // 3. 替换按钮为“保存/取消”（区分模块显示文本）
                        const saveText = tableType === 'email' ? '保存邮箱' : '保存地址';
                        $btnContainer.html(`
                        <a class="action-link-input" data-type="${tableType}" data-id="${realRowId}">${saveText}</a>&nbsp;&nbsp;
                        <a class="action-link-quxiao" data-type="${tableType}" data-id="${realRowId}">取消</a>
                    `);

                        // 4. 显示输入框，隐藏原始文本（核心：区分模块处理输入框）
                        if (tableType === 'email') {
                            // 邮箱模块：显示邮箱输入框（ID：email-${realRowId}）
                            $currentRow.find('.editRow').hide();
                            const $emailInput = $currentRow.find(`#email-${realRowId}`);
                            if ($emailInput.length > 0) {
                                $emailInput.show(); // 显示邮箱输入框（关键：这步不执行就会“没反应”）
                            } else {
                                alert("未找到邮箱输入框，请检查ID是否正确！");
                            }
                        } else if (tableType === 'address') {
                            // 地址模块：显示地址相关输入框（需先给地址模块添加输入框和.editRow类）
                            $currentRow.find('.editRow').hide();
                            $currentRow.find('.editInput').show();
                        }

                        // 5. 绑定“取消”按钮事件（刷新页面或恢复状态）
                        $(".action-link-quxiao").on("click", function () {
                            window.location.href = "invoice-info-manage.jsp";
                        });

                        // 6. 绑定“保存”按钮事件（区分模块传参）
                        $(".action-link-input").on("click", function () {
                            const type = $(this).data('type');
                            const id = $(this).data('id');
                            if (type === 'email') {
                                // 邮箱保存逻辑
                                const $emailInput = $currentRow.find(`#email-${id}`);
                                const emailName = $emailInput.val().trim();
                                if (!emailName) {
                                    alert("邮箱不能为空！");
                                    return;
                                }
                                // 调用邮箱保存接口
                                $.get("baseInfo/getEditEmail", {
                                    emailId: id,
                                    emailName: emailName
                                }, function (i) {
                                    alert(i ? "邮箱修改成功！" : "邮箱修改失败！");
                                    window.location.reload();
                                }).error(function (xhr) {
                                    alert("保存失败：" + xhr.responseText);
                                });
                            } else if (type === 'address') {
                                // 地址保存逻辑（需先给地址模块添加输入框和参数）
                                alert("地址保存逻辑待实现");
                            }
                        });
                    });
                },

                // 保留其他函数（cancelEdit、disableEditing、saveTableData）
                saveRow: function (tableType, rowIndex) {
                    this.disableEditing(tableType, rowIndex);
                    this.saveTableData(tableType, rowIndex);
                },
                cancelEdit: function (tableType, rowIndex) {
                    this.disableEditing(tableType, rowIndex);
                },
                disableEditing: function (tableType, rowIndex) {
                    console.log("执行取消操作（邮箱模块）：", "tableType=", tableType, "rowIndex=", rowIndex);
                    // 1. 定位关键元素（邮箱模块容器ID固定为operate-email-${rowIndex}）
                    const $btnContainer = $(`#operate-email-${rowIndex}`);
                    const $currentRow = $btnContainer.closest('tr');
                    if (!$btnContainer || !$currentRow) {
                        console.warn("未找到邮箱模块容器或行，取消操作失败");
                        return;
                    }

                    // 2. 邮箱模块专属：隐藏输入框（#email-${rowIndex}），显示原始文本（editRow）
                    if (tableType === "email") {
                        $currentRow.find(`#email-${rowIndex}`).hide(); // 精准隐藏邮箱输入框
                    } else {
                        $currentRow.find('.editInput').hide(); // 其他模块隐藏类为editInput的输入框
                    }
                    $currentRow.find('.editRow').show(); // 显示原始文本（所有模块通用）

                    // 3. 恢复邮箱模块的“编辑/设为默认”按钮（类名与初始一致：action-link1、action-link2）
                    $btnContainer.html(`
            <a class="action-link1" onclick="DynamicTableManager.enableEditing('${tableType}', '${rowIndex}')">编辑</a>&nbsp;&nbsp;
            <a class="action-link2" onclick="setDefaultEmail('${rowIndex}')">设为默认邮箱</a>
        `);
                },
                saveTableData: function (tableType, rowIndex) {
                    console.log('保存' + (tableType === 'email' ? '邮箱' : '地址') + '数据，行索引: ' + rowIndex);
                }
            };

            // 页面初始化（确保先初始化 DynamicTableManager）
            $(function () {
                DynamicTableManager.init(); // 先初始化表格管理模块（关键：确保addRow函数挂载）
                InvoiceEditor.init();       // 后初始化基础编辑模块
            });

        })(jQuery);
    </script>
    </body>
    </html>
